The Universal Serial Bus (USB) is a communication interface that supports data exchange between a host computer and a wide range of simultaneously accessible peripheral devices. The attached peripheral devices operate using a host-scheduled, token-based protocol. The bus allows peripherals to be attached, configured, used, and detached while the host and other peripherals are in operation.
USB is defined by a specification that is approved by a committee of industry representatives. This USB specification is available from USB Implementers Forum (current Internet URL: www.usb.org). The USB specification covers all aspects of USB operation, including electrical, mechanical, and communications characteristics. To be called a USB device, a peripheral conforms to this specification.
USB device information is typically stored in so-called “descriptors.” Descriptors are used in a USB system to identify the device to a host system, for example so that the host computer can select and execute appropriate software used to interface with the device connected to that host computer. The host computer transmits control requests to retrieve descriptors from the device. Independent hardware vendors (IHVs) can also store class and vendor-specific descriptors. However, the flexibility of use of these descriptors, as well as their ensured compatibility, is limited. For example, such descriptors are either limited by the types of descriptors included in the specification of the communication interface (e.g., USB) with which the device is associated, or else the descriptors may be limited as to their compatibility with various host computing systems that may receive such devices.
It is with respect to this general technical environment that the embodiments of the present application are directed.